package com.heqiang.service;


import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.heqiang.constant.Constant;
import com.heqiang.dao.RoleDao;
import com.heqiang.dao.AdminDao;
import com.heqiang.entity.manager.Admin;
import com.heqiang.tools.DataTableParam;
import com.heqiang.tools.MD5;
import com.heqiang.tools.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import sun.text.CollatorUtilities;

import java.util.List;

@Service
public class AdminService {

    @Autowired
    private AdminDao dao;
    @Autowired
    private RoleDao roleDao;


    /***************************************************** Query ******************************************************/
    /**
     * 查询-全部用户
     *
     * @param
     * @return java.util.List<com.heqiang.bx.manage.entity.Admin>
     * @Author zhangheqiang
     * @Date 2020/3/16
     **/
    public Page<Admin> search(Admin admin, DataTableParam dataTableParam) {
        PageHelper.startPage(dataTableParam.getPageNo(), dataTableParam.getLength());
        List<Admin> list = dao.search(admin);
        return getPages(list);
    }

    /**
     * 查询-根据id
     *
     * @param id
     * @return com.heqiang.bx.manage.entity.Admin
     * @Author zhangheqiang
     * @Date 2020/3/16
     **/
    public Admin findById(Long id) {
        return dao.findById(id);
    }


    /***************************************************** Modify *****************************************************/
    /**
     * 删除-根据id
     *
     * @param id
     * @return int
     * @Author zhangheqiang
     * @Date 2020/3/16
     **/
    public void del(Long id) {
        dao.del(id);
    }

    /**
     * 编辑-用户状态
     *
     * @param admin
     * @return int
     * @Author zhangheqiang
     * @Date 2020/3/16
     **/
    public void modifyStatus(Admin admin) {
        dao.modifyStatus(admin);
    }


    /**
     * 编辑-用户
     * @Author zhang heqiang
     * @Date 2020/5/17
     * @param admin
     * @return void
     **/
    public void modify(Admin admin) {
        //如果密码没有修改的话
        Admin old = dao.findById(admin.getId());
        if (MD5.parseMD5(admin.getPassword()+ Constant.PWD_SUFFIX).equals(old.getPassword())){
            admin.setPassword(old.getPassword());
        }
        dao.modify(admin);
    }
    /**
     * 重置密码
     * @Author zhang heqiang
     * @Date 2020/5/16
     * @param admin
     * @return void
     **/
    public void reset(Admin admin) {
        dao.reset(admin);
    }

    /**
     * 新增-用户
     *
     * @param admin
     * @return int
     * @Author zhangheqiang
     * @Date 2020/3/16
     **/
    public void add(Admin admin) {
        dao.add(admin);
    }

    /**
     * 用户登录
     *
     * @param admin
     * @return void
     * @Author zhangheqiang
     * @Date 2020/5/13
     **/
    public Admin login(Admin admin) {
        return dao.login(admin);
    }

    /********************************************************* PRIVATE ****************************************************/
    /**
     * 设置响应参数
     *
     * @param list
     * @return com.heqiang.tools.Page<com.heqiang.entity.manager.Admin>
     * @Author zhang heqiang
     * @Date 2020/5/14
     **/
    private Page<Admin> getPages(List<Admin> list) {
        if (CollectionUtils.isEmpty(list)) {
            return new Page<>();
        }
        //获得与分页相关参数
        PageInfo<Admin> pageInfo = new PageInfo<Admin>(list);
        Page<Admin> pages = new Page<>();
        pages.setList(list);
        Long total = pageInfo.getTotal();
        pages.setTotal(total.intValue());
        pages.setPageNo(pageInfo.getPageNum());
        pages.setPageSize(pageInfo.getPageSize());
        pages.setTotalPage(pageInfo.getPages());
        return pages;
//        System.out.println("当前页数：" + pageInfo.getPageNum());
//        System.out.println("每页条数：" + pageInfo.getPageSize());
//        System.out.println("总条数：" + pageInfo.getTotal());
//        System.out.println("总页数：" + pageInfo.getPages());
//        System.out.println("上一页：" + pageInfo.getPrePage());
//        System.out.println("下一页：" + pageInfo.getNextPage());
//        System.out.println("是否是第一个：" + pageInfo.isIsFirstPage());
//        System.out.println("是否是最后一个：" + pageInfo.isIsLastPage());
    }

}
